function jsonStringigy(data) {
  let type = typeof data;
  // 判断是不是对象
  if (type !== "object") {
    let result = data;

    // data 可能是基础数据类型的情况在这里处理
    if (Number.isNaN(data) || data === Infinity) {
      // NaN 和 infinity 序列化返回null
      result = "null";
    } else if (
      type === "function" ||
      type === "undefined" ||
      type === "symbol"
    ) {
      // 由于 function 序列化返回 undefined，因此和 undefined、symbol 一起处理
      return undefined;
    } else if (type === "string") {
      result = "'" + data + "'";
    }
    // 这里在进行一下String处理
    return String(result);
  } else if (type === "object") {
    if (data === null) {
      return null;
    } else if (data instanceof Array) {
      let result = [];
      data.forEach((item, index) => {
        if (
          typeof item === "undefined" ||
          typeof item === "function" ||
          typeof item === "symbol"
        ) {
          result[index] = "null";
        } else {
          // 如果不是上面的情况就进行一个递归调用
          result[index] = jsonStringigy(item);
        }
      });
      result = "[" + result + "]";
      // 这个正则替换是替换我所有的单引号这样吗？
      return result.replace(/'/g, "");
    }
  } else {
    // 处理普通对象
    let result = [];
    Object.keys(data).forEach((item, index) => {
      if (typeof item !== "symbol") {
        if (
          data[item] !== "undefined" &&
          typeof data[item] !== "function" &&
          typeof data[item] !== "symbol"
        ) {
          result.push("" + item + "" + ":" + jsonStringigy(data[item]));
        }
      }
    });
    return ("{" + result + "}").replace(/'/g, "");
  }
}
